#include <iostream>
using namespace std;

//version 1 使用一个变量做位图使用！
class Soluton{
public:
    bool IsUnique(string s){
        //做一个优化，长度超过26的必然是有重复的，直接返回false
        if(s.size() > 26) return false; 
        int bit = 0;
        for(auto ch : s) {
            int index = ch - 'a', i = 1;
            int tmp = (i << index) & bit;
            if(tmp) return false;
            bit |= (i << index); 
        }
        return true;
    }
};


//因为Leetcode上我没有找到原题，这里直接就手动测试一下
int main(){
    cout << Soluton().IsUnique("leetcode") << endl;
    cout << Soluton().IsUnique("abc") << endl;
    cout << Soluton().IsUnique("leetasdadsad") << endl;
    cout << Soluton().IsUnique("leetcodeeqqeq") << endl;
    cout << Soluton().IsUnique("letcod") << endl;


    return 0;
}